class

Доступность

Flash Player 6.

Синтаксис

[dynamic] class className  [ extends superClass ] 
              [ implements interfaceName [, interfaceName... ] ]
{
  // class definition here
}

Примечание: Для того, чтобы использовать это ключевое слово, вы должны выставить ActionScript 2.0 и Flash Player 6 или более поздний в настройках публикации FLA файла. Это ключевое слово поддерживается, только в внешних, подгружаемых скриптовых файлах, не в скриптах, написанных в панели Actions.

Параметры

className  Полное корректное имя класса.

superClass Имя класса, от которого наследуется className. Необязательный параметр.

interfaceName Имя интерфейса, методы которого должен выполнять className. Необязательный параметр.

Описание

Определяет класс, позволяющий вам реализовывать объекты, на которые распостраняются методы и свойства, определенные вами. Например, если вы разрабатываете систему контроля за счетами, вы может создать класс "счет", который будет определять все методы и свойства, которые имеет каждый счет. Затем вы можете использовать команду new invoice() для создания объекта "счет".

Имя класса должно совпадать с именем внешнего файла, содержащего этот класс. Имя внешнего файла должно быть именем класса с расширением .as. Например, если имя вашего класса "Student", файл с определением этого класса должен называться "Student.as".

Если класс находится внутри пэкэджа (package), при объявлении класса должно использоваться полное корректное имя класса в следующей форме: base.sub1.sub2.MyClass (см. также "Using packages" в Using ActionScript in Flash). Структура директорий, в которой находится AS файл, содержащий класс, должна совпадать с структурой пэкэджа, например base/sub1/sub2/MyClass.as (см. также: "Understanding the classpath" в Using ActionsScript in Flash). Если класс определен в форме “class MyClass,” он находится в пэкадже по умолчанию а файл MyClass.as будет расположен на верхнем уровне той же директории.

По этой причине, необходимо тщательно планировать структуру директорий перед тем, как вы начнете создавать классы. Иначе, если вы решите переместить файлы с классами после того, как вы создали их, вам нужно будет исправлять все объявления классов.

Вы не можете объединить определения классов, также вы не можете определить дополнительные классы без определения класса.

Чтобы показать, что объекты могут добавлять и получать доступ к динамическим свойствам, используйте при объявлении класса ключевое слово dynamic.Для того, чтобы указать, что класс имплементирует интерфейс, используйте ключевое слово implements. Чтобы создать подклассы класса, используйте ключевое слово extends.(Класс может расширять(extend) только один класс, но может имплементировать нескольких интерфейсов). Вы можете использовать одновременно implements и extends. В следующем примере показано, как используются implements и extends:

class C implements Interface_i, Interface_j    // OK
class C extends Class_d implements Interface_i, Interface_j    // OK
class C extends Class_d, Class_e    // not OK 

См. также Using ActionScript in Flash.

Пример

В следующем примере создается класс, названный "Plant". Конструктор класса Plant принимает два параметра:

// Filename Plant.as
class Plant {
  // Define property names and types
  var leafType:String;
  var bloomSeason:String;
  // Following line is constructor
  // because it has the same name as the class
  function Plant(param_leafType:String, param_bloomSeason:String) {
    // Assign passed values to properties when new Plant object is created
    this.leafType = param_leafType;
    this.bloomSeason = param_bloomSeason;
  }
  // Create methods to return property values, because best practice
  // recommends against directly referencing a property of a class
  function getLeafType():String {
    return leafType;
  }
  function getBloomSeason():String {
    return bloomSeason;
  }
}

В внешнем файле со скриптом или в панели Actions используйте опреатор new для того, чтобы создать объект Plant.

var pineTree:Plant = new Plant("Evergreen", "N/A");
// Confirm parameters were passed correctly
trace(pineTree.getLeafType());
trace(pineTree.getBloomSeason());

В следующем примере создается класс с именем ImageLoader. Конструктор класса ImageLoader принимает три параметра:

// Filename ImageLoader.as
class ImageLoader extends MovieClip {
  function ImageLoader(image:String, target_mc:MovieClip, init:Object) {
    var listenerObject:Object = new Object();
    listenerObject.onLoadInit = function(target) {
      for (var i in init) {
        target[i] = init[i];
      }
    };
    var JPEG_mcl:MovieClipLoader = new MovieClipLoader();
    JPEG_mcl.addListener(listenerObject);
    JPEG_mcl.loadClip(image, target_mc);
  }
}

Во внешнем файле со скриптом или в панели Actions, используйте оператор new, чтобы создать объект ImageLoader.

var jakob_mc:MovieClip = this.createEmptyMovieClip("jakob_mc", this.getNextHighestDepth());
var jakob:ImageLoader = new ImageLoader("http://www.macromedia.com/devnet/mx/blueprint/articles/nielsen/spotlight_jnielsen.jpg", jakob_mc, {_x:10, _y:10, _alpha:70, _rotation:-5});

См. также

dynamic, extends, implements, import, interface, new, Object.registerClass()